Determining feasible itinerary solutions

ABSTRACT

A method for translating user requests into itinerary solutions is disclosed. The method may commence with receiving an itinerary request associated with one or more passengers. The method may continue with parsing the itinerary request to create an itinerary network associated with the itinerary request. The itinerary network may include at least two or more nodes and dependencies between two or more nodes. Upon the parsing, a topology of the itinerary network may be created. The method may include processing the itinerary network using the topology to create a plurality of tuples. The plurality of tuples may be analyzed. The method may continue with determining feasible itinerary solutions based on the analysis. The feasible itinerary solutions may be ranked. The method may further include presenting, to the one or more passengers, at least one itinerary solution selected from the feasible itinerary solutions based on the ranking.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a Continuation of U.S. patent application Ser. No.15/595,795 filed on May 15, 2017, which is a Continuation of U.S. patentapplication Ser. No. 15/069,791 filed on Mar. 14, 2016 and issued on May23, 2017 as U.S. Pat. No. 9,659,099, which is a continuation-in-part ofU.S. patent application Ser. No. 13/419,989 filed on Mar. 14, 2012 andissued on Mar. 15, 2016 as U.S. Pat. No. 9,286,629, which claims thepriority benefit of U.S. Provisional Patent Application No. 61/452,633,filed on Mar. 14, 2011. The disclosures of all of the above applicationsare incorporated by reference for all purposes.

TECHNICAL FIELD

The present disclosure relates to data processing and, morespecifically, to translating user requests into itinerary solutions.

BACKGROUND

When searching for and booking flights and hotels, a travel consumer mayutilize choice environments provided by online travel agencies andwebsites. These choice environments can provide travel-relatedinformation and advice on everything from destinations to hotels,related points of interest, and pricing data for a vast array of goodsand services. However, a choice task of the travel consumer is oftenencumbered by information abundance and by legacy technology platformsthat almost invariably complicate the consumer choice problem.

Moreover, travel agents and online travel agencies may need to sortthrough a plurality of records and manually select various options whenselecting and scheduling the travel itinerary for the travel consumer.This process becomes particularly difficult when multiple databases areinvolved in developing complex itineraries, such as reserving multipleflights, hotels, cars, and restaurants, and for developing itinerariesfor groups of travel consumers. Furthermore, travel agents and onlinetravel agencies may charge travel consumers for making changes to theiritineraries and these changes can take from hours to days to takeeffect.

Additionally, a conventional travel reservation process does nottypically involve taking into consideration previous travel itinerariesassociated with the travel consumer. Thus, searching for and selecting atravel itinerary is done without analysis of selections or preferencesassociated with previous requests.

SUMMARY

This summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used as an aid in determining the scope of the claimed subjectmatter.

According to one example embodiment of the disclosure, a system fortranslating user requests into itinerary solutions is provided. Thesystem may include a processor, a parser in communication with theprocessor, and a scheduler in communication with the processor. Theprocessor may be operable to receive an itinerary request associatedwith one or more passengers. Furthermore, the processor may be operableto present at least one itinerary solution to the one or morepassengers. The at least one itinerary solution may be selected fromfeasible itinerary solutions based on ranking.

The parser may be operable to parse the itinerary request to create anitinerary network associated with the itinerary request. The itinerarynetwork may include at least two or more nodes and dependencies betweentwo or more nodes. The scheduler may be operable to create a topology ofthe itinerary network. The topology may include at least an ordered listof the two or more nodes. The scheduler may be further operable toprocess the itinerary network using the topology to create a pluralityof tuples, where a single node may correspond to a single tuple. Theplurality of tuples may include at least flight tuples and hotel tuples.The scheduler may be operable to analyze the plurality of tuples basedon the itinerary request and the dependencies between two or more nodes.Based on the analysis, the scheduler may determine the feasibleitinerary solutions. Furthermore, the scheduler may be operable to rankthe feasible itinerary solutions based on at least passengerpreferences.

According to another example embodiment of the disclosure, a method fortranslating user requests into itinerary solutions is provided. Themethod may commence with receiving an itinerary request associated withone or more passengers. The method may continue with parsing theitinerary request to create an itinerary network associated with theitinerary request. The itinerary network may include at least two ormore nodes and dependencies between two or more nodes. Upon the parsing,a topology of the itinerary network may be created. The topology mayinclude at least an ordered list of the two or more nodes. The methodmay further include processing the itinerary network using the topologyto create a plurality of tuples, where a single node may correspond to asingle tuple. The plurality of tuples may include at least flight tuplesand hotel tuples. Furthermore, the plurality of tuples may be analyzedbased on the itinerary request and the dependencies between two or morenodes. The method may continue with determining feasible itinerarysolutions based on the analysis. The method may further include rankingthe feasible itinerary solutions based on passenger preferences.Furthermore, the method may include presenting at least one itinerarysolution to the one or more passengers. The at least one itinerarysolution may be selected from the feasible itinerary solutions based onthe ranking.

Other example embodiments of the disclosure and aspects will becomeapparent from the following description taken in conjunction with thefollowing drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments are illustrated by way of example and not limitation in thefigures of the accompanying drawings, in which like references indicatesimilar elements.

FIG. 1 illustrates an environment within which systems and methods fortranslating user requests into itinerary solutions can be implemented.

FIG. 2 is a flow diagram showing a process for translating user requestsinto travel itineraries depending on a previous itinerary network.

FIG. 3 is a block diagram showing a translation of user requests intotravel itineraries via a parser and a scheduler.

FIG. 4 is a process flow diagram showing a method for translating userrequests into itinerary solutions.

FIG. 5 is block diagram illustrating a process for building an adjacencymatrix.

FIG. 6 is a block diagram illustrating a process for building a levelmatrix.

FIG. 7 is a block diagram illustrating a process for creating atopology.

FIG. 8 is a block diagram showing various modules of a system fortranslating user requests into itinerary solutions.

FIG. 9 shows a diagrammatic representation of a computing device for amachine in the exemplary electronic form of a computer system, withinwhich a set of instructions for causing the machine to perform any oneor more of the methodologies discussed herein can be executed.

DETAILED DESCRIPTION

The following detailed description includes references to theaccompanying drawings, which form a part of the detailed description.The drawings show illustrations in accordance with exemplaryembodiments. These exemplary embodiments, which are also referred toherein as “examples,” are described in enough detail to enable thoseskilled in the art to practice the present subject matter. Theembodiments can be combined, other embodiments can be utilized, orstructural, logical, and electrical changes can be made withoutdeparting from the scope of what is claimed. The following detaileddescription is, therefore, not to be taken in a limiting sense, and thescope is defined by the appended claims and their equivalents.

The disclosure relates to systems and methods for translating userrequests into itinerary solutions. More specifically, upon receiving auser request, such as an itinerary request associated with one or morepassengers, the itinerary request is forwarded to a parser. The parsermay be responsible for parsing the itinerary request to determine nodesassociated with the itinerary request and dependencies between thenodes. The node may represent an attribute associated with the itineraryrequest, such as a city, a flight, a hotel, a date, time, and so forth.The nodes may be combined into an itinerary network.

End-to-End Process Overview

Based on the itinerary request, an itinerary object associated with theitinerary request may be created. The itinerary object, also referred toas an itinerary network object, is a set of data that contains at leastone of the following: an itinerary request, an itinerary network createdby the parser, structures created by the scheduler (such as an adjacencymatrix, a level matrix, and a topology), lists of partitions, itinerarysolutions, a passengers list, function calls, and other related items,such as a conversation message and the like. The itinerary networkobject may be passed to a pre-scheduling process, also referred hereinto as a pre-schedule algorithm. Upon creation of the itinerary network,a scheduler may create a level matrix for the itinerary network byselecting main nodes and child nodes that depend on the main nodes.Furthermore, the scheduler may use the pre-schedule algorithm to createa level matrix of the itinerary network. Based on the level matrix, atopology of the itinerary network may be created. In the topology, thenodes are organized in a form of an ordered list.

Using the pre-schedule algorithm a level matrix of nodes and a topologyof nodes are created. Based on the topology, the parser can analyze theitinerary network to create tuples associated with the itineraryrequest. For example, flight tuples and hotel tuples can be created. Asused herein, a tuple is a set of objects associated with a node. In anexample embodiment, in a topology, a single node may correspond to asingle tuple. The parsers use a resource independent scheduling process,also referred to as a resource independent schedule algorithm, toprocess through the topology one node at a time to create a flight tupleand/or a hotel tuple for a given flight node and/or hotel node. Tuplesmay not be assigned to city nodes.

Each flight tuple and/or hotel tuple provides date intervals and timeintervals to be used in a content search for an itinerary solution(i.e., a flight solution or a hotel solution) for the flight node or thehotel node. In the case of flight tuples, date intervals and/or timeintervals may include widebucket intervals. In the case of hotel tuples,date intervals and/or time intervals may include check-in dates,check-in times, checkout dates and check-out times. Flight tuples havean additional optimal bucket interval used for content search and forranking solutions at a later stage.

Partition

The flight tuples and hotel tuples may then be separated into groupsbased on the passenger. A partition subset may be determined based on arelation or a property of interest associated with flight tuples. Foreach passenger, one or more partitions of the flight tuples associatedwith that passenger may be created.

For each passenger, a single partition of the set of flight tuples intoone or more disjoint groups is created, based on a relation or propertyof interest. The groups are called partition subsets.

Content Search

For each passenger, the following steps may be performed. The contentsearch may be performed based on each hotel tuple, obeying the check-inand checkout dates and times specified in the hotel tuple. The itinerarysolutions found based on the content search may be stored in a tuplesolution bucket. Then, the content search may be performed separately oneach partition subset of the single partition for the passenger. If thesubset contains one flight, itinerary solutions for a one-way flight maybe returned. If there are two flights in the subset, a pricedcombination of two flights may be returned. The widebucket date and timeintervals from the flight tuples may be obeyed in each search. Thesolutions may be stored in a partition subset solution bucket.

In parallel, the content search can be performed across all partitionsubsets for all passengers. For each partition subset, the flight andhotel attributes for the content search may be provided by the tupletime buckets. A set of flight solutions and hotel solutions incompliance with restrictions associated with the itinerary request, suchas time restrictions, may be returned and stored for each of thepartition subsets. If the only restriction is time, the buckets withinthe solution fall. A vital aspect of the scheduling is that after theranking, the scheduling provides the best fitted itinerary solutions forthe restrictions placed on the itinerary request. It can be difficult tofind results if each time the content search is made and only resultsthat exactly match the restrictions are found. Multi-objective rankingis the mechanism by which providing of the best fitted itinerarysolutions is achieved.

Ranking

Ranking of the flight solutions and hotel solutions is performed basedon the results of the content search before the flight solutions andhotel solutions are returned to the passenger. Each flight solution andhotel solution is scored against multiple user preferences.

Cartesian Product

For each passenger, the Cartesian product algorithm may create feasibleitinerary solutions by combining solutions from the partition subsetsand individual hotel tuples correctly into one set. These combinedsolutions may be ranked.

A solution space for the itinerary is formed by taking the Cartesianproduct of the sets of solutions for each of the partition subsets.Infeasible combinations of solutions may be removed from a solutionlist. Furthermore, solutions from the partition subsets and individualhotel tuples can be combined into one set of feasible itinerarysolutions and stored in the solution list in the partition for eachpassenger. The solutions can be ranked and a predetermined number of topsolutions can be returned and provided to the passengers via a userinterface. It another example embodiment, more than one passenger may becombined into a partition subset.

If same flight dependencies and hotel dependencies exist for differentpassengers, an itinerary wide Cartesian product algorithm may beperformed. Itinerary wide Cartesian product algorithm may combineitinerary solutions from each passenger and rank the itinerary solutionsobeying same flight dependencies hotel dependencies, if any exist. Thehighest ranked itinerary solution may be returned.

Referring to the drawings, FIG. 1 illustrates an environment 100 withinwhich the systems and methods for translating user requests intoitinerary solutions can be implemented, in accordance with someembodiments. An itinerary request 120 associated with one or morepassengers 130 may be received, for example, via a user interfacedisplayed on a user device 140. In particular, the user device 140, insome example embodiments, may include a Graphical User Interface (GUI)for displaying the user interface associated with a system 800 fortranslating user requests into itinerary solutions. In a typical GUI,instead of offering only text menus or requiring typed commands, thesystem 800 may present graphical icons, visual indicators, or specialgraphical elements called widgets that may be utilized to allow thepassengers 130 to interact with the system 800.

The itinerary request 120 may be transmitted to the system 800 fortranslating user requests into itinerary solutions via a network 110.The network 110 may include the Internet or any other network capable ofcommunicating data between devices. Suitable networks may include orinterface with any one or more of, for instance, a local intranet, aPersonal Area Network, a Local Area Network (LAN), a Wide Area Network(WAN), a Metropolitan Area Network, a virtual private network, a storagearea network, a frame relay connection, an Advanced Intelligent Networkconnection, a synchronous optical network connection, a digital T1, T3,E1 or E3 line, Digital Data Service connection, Digital Subscriber Lineconnection, an Ethernet connection, an Integrated Services DigitalNetwork line, a dial-up port such as a V.90, V.34 or V.34bis analogmodem connection, a cable modem, an Asynchronous Transfer Modeconnection, or an Fiber Distributed Data Interface or Copper DistributedData Interface connection. Furthermore, communications may also includelinks to any of a variety of wireless networks, including WirelessApplication Protocol, General Packet Radio Service, Global System forMobile Communication, Code Division Multiple Access or Time DivisionMultiple Access, cellular phone networks, Global Positioning System,cellular digital packet data, Research in Motion, Limited duplex pagingnetwork, Bluetooth radio, or an IEEE 802.11-based radio frequencynetwork. The network 110 can further include or interface with any oneor more of an RS-232 serial connection, an IEEE-1394 (Firewire)connection, a Fiber Channel connection, an IrDA (infrared) port, a SCSI(Small Computer Systems Interface) connection, a Universal Serial Bus(USB) connection or other wired or wireless, digital or analog interfaceor connection, mesh or Digi® networking. The network 110 may be anetwork of data processing nodes that are interconnected for the purposeof data communication. The network 110 may include any suitable numberand type of devices (e.g., routers and switches) for forwardingcommands, content, and/or web object requests from each client to theonline community application and responses back to the clients.

The user device 140 may include a mobile telephone, a personal computer(PC), a laptop, a smart phone, a tablet PC, and so forth. The system 800may be a server-based distributed application, thus it may include acentral component residing on a server and one or more clientapplications residing on one or more user devices and communicating withthe central component via the network 110. The passengers 130 maycommunicate with the system 800 via a client application availablethrough the user device 140.

The itinerary request 120 may be analyzed based on travel itinerariesavailable from the optional database 150 with reference to preferencesof the passengers 130. An itinerary solution 160 suiting the itineraryrequest 120 and preferences of the passengers 130 may be determined. Theitinerary solution 160 may be presented to the passengers 130 bydisplaying the itinerary solution 160 via the user interface on a screenof the user device 140.

FIG. 2 is a flow diagram 200 showing an overall process for translatinguser requests into travel itineraries depending on a previous itinerarynetwork. More specifically, an itinerary request 120 associated with oneor more passengers may be received via a user interface 220. Theitinerary request 120 may be processed by an original module 240 or by achange management module 250 depending on whether one or more previousitinerary networks exist for these passengers, as determined at block230. In an example embodiment, differences between existing itinerarynetworks and new itinerary networks (if no existing itinerary networksare found) may be resolved by performing an intelligent ranking process.

FIG. 3 is a schematic block diagram 300 showing translating userrequests into travel itineraries by the original module within theenvironment described with reference to FIG. 1, according to exampleembodiments. The translation of user requests into travel itineraries isperformed by a processor (not shown), a parser 310, a scheduler 320, anda user interface 220. When the processor receives an itinerary request120 from one or more passengers, an itinerary object may be created atblock 330. The itinerary object is a set of data that contains at leastthe following data: the itinerary request 120, an itinerary network 340created by the parser 310, structures created by the scheduler 320 (suchas an adjacency matrix, a level matrix, and a topology), lists ofpartitions, itinerary solutions, a passengers list, function calls, andother related items, such as a conversation message and the like. Theitinerary object may contain all the information needed for thescheduler 320 and solutions which the scheduler 320 generates. In anexample embodiment, a file ‘Itinerary.es’ may be created to store theitinerary object. Additionally, in relation to command and control, theitinerary object may allow communication between the parser 310 and thescheduler 320.

When the itinerary object is created, the itinerary request 120 and theitinerary object may be forwarded to the parser 310. The parser 310 maycreate an itinerary network 340 and forward the itinerary network 340 tothe scheduler 320. The scheduler 320 analyzes the itinerary network 340,individual passenger profiles, and availability of content. The mainprocesses of the scheduler 320 are pre-scheduled at block 350, followedby forwarding the itinerary network 340 to block 360 forresource-independent scheduling of the itinerary network 340. Upon theresource-independent scheduling, a list 370 of tuples and itineraries380 are provided to block 390. The tuples may be separated into groupsbased on the passenger. A partition subset may be determined based on arelation or a property of interest associated with the tuples. For eachpassenger, one or more partitions of the flight tuples associated withthat passenger may be created. A content search may be performed overthe partition subset and a Cartesian product may be applied to resultsof the content search on the partition subsets. Itinerary solutions 395feasible for the itinerary request 120 may be forwarded to the userinterface 220. Steps performed by the parser 310 and the scheduler 320are described in more detail below with reference to FIGS. 4-7.

FIG. 4 is a detailed process flow diagram showing a method 400 fortranslating user requests into travel itineraries, according to exampleembodiments. The method 400 may commence with receiving an itineraryrequest at operation 410. In an example embodiment, the itineraryrequest may be provided via at least one of the following: a naturallanguage, a typed text, a selection of preexisting options, and soforth. In a further example embodiment, the itinerary request may beassociated with one passenger or a group of passengers. Furthermore,based on the receipt of the itinerary request, an itinerary objectassociated with the itinerary request may be created.

At step 420, upon receipt of the itinerary request, the parser performsparsing of the itinerary request to create an itinerary networkassociated with the itinerary request. In an example embodiment, theitinerary network includes a node list, a passenger list, and adependency list. The node list may contain at least two or more nodes.Each of the nodes represents an attribute, such as a city, a flight, ahotel, and so forth. The dependency list may contain dependenciesbetween two or more nodes, in particular, a directed relation betweentwo nodes, such as a level dependency. In an example embodiment, thenode may have additional information concerning an itinerary object thatthe node represents, such as a passenger or a group of passengers andattributes requested according to the itinerary request, for example, adate, an airline, a hotel brand, and so forth.

The scheduler receives the itinerary network created by the parser. Thescheduler is responsible for building of a set of itinerary solutions(e.g., flights, hotels, and so forth), taking into account the structureof the itinerary network, individual passenger profiles, and theavailability in content. In particular, the scheduler performspre-scheduling of the itinerary network, resource independent schedulingof the itinerary network, a content search, and applying a Cartesianproduct to results of the content search on the partition subsets.

A Pre-Scheduling Process of the Scheduler.

A pre-scheduling process includes creating an adjacency matrix, a levelmatrix, and a topology.

Adjacency Matrix.

Still referring to FIG. 4, the method 400 may optionally includecreating an adjacency matrix of the itinerary network based on theclassification of the nodes into main nodes and child nodes. Theadjacency matrix is an (n×n) matrix, where n is the number of nodes inthe network. Each (i, j) entry has a value of (1) if there is a directeddependency between node i and node j in the network, otherwise, each (i,j) entry has value of (−1) or (0).

FIG. 5 is a block diagram 500 illustrating a process of building theadjacency matrix. More specifically, at block 510, any implieddependency provided by the parser or a sink node can be removed. Atblock 520, implied dependencies between the nodes may be created. Morespecifically, the scheduler may classify each of the nodes into a mainnode and a child node based on the dependencies between the nodes. Thechild node is dependent on the main node. Therefore, an implieddependency between a main node and its child node can be created. Forexample, an implied dependency between a city node being the main nodeand a hotel node being a child node may be created. The implieddependency may be also created between a flight node which is a mainnode and a hotel node which is a child node of a destination city. Atblock 530, an initial setup of the adjacency matrix can be performed. Inparticular, dimensions (n+2×n+2) can be set, where n is a number ofnodes in the itinerary network. The adjacency matrix can be created andall entries initially set to (−1). At block 540, entries that representdependencies output by the parser and implied dependencies are set to(1).

Level Matrix.

Referring again to FIG. 4, the method 400 may optionally includeorganizing the nodes into levels to create a level matrix of theitinerary network. In other words, the level matrix, also referred to asa directed acyclic graph matrix, can organize nodes into levels. In anexample embodiment, ‘Level 0’ of the level matrix includes node A andnode B, ‘Level 1’ includes node C, node D, and node E, and ‘Level 2’includes node F. The nodes in each level have dependent nodes at theprevious level. The nodes in ‘Level 0’ have no dependencies. The nodesat ‘Level 1’ have one or more dependent nodes at ‘Level 0’. The nodes at‘Level 2’ have one or more dependent nodes at ‘Level 1’, and so forth.

FIG. 6 is a block diagram 600 illustrating a process of building a levelmatrix. More specifically, at block 610, a number of levels can be set.In particular, dimensions (n+1×n+1) can be set, where n is number ofnodes in the network. The row index may represent the level, the columnindex may represent the order in which the node was put in. For example,an entry in (i, j) is the index of the node placed in level i in j^(th)place. At block 620, the level matrix may be created and initialized.All entries may be initially set to (−1). At block 630, a first pass ofthe level matrix may be performed. For this purpose, first, all nodeswith no dependencies may be found and placed in level 0. Second, allnodes with dependencies at level 0 may be found and placed in level 1.Successive level nodes may be created until a maximum level is reached.At block 640, a second pass of the level matrix may be performed. Inparticular, the scheduler may go back through the level matrix andremove duplicate nodes. The nodes in the level matrix may be orderedsuch that the nodes only appear once and at the latest stage or highestlevel. Since the level matrix is used for recusing through the nodes,level matrix may ensure that, when performing a forward pass, alldependent nodes for a specific node have already been scheduled, or inthe case of the creating of the topology the ordering of the topologyalso may ensure this condition. At block 650, a sink node may be added.

Topology.

Still referring to FIG. 4, the method 400 may further include operation430, in which the scheduler may create a topology of the itinerarynetwork. The level matrix provides the basis on which the topology ofthe itinerary network may be built. The topology is an ordered list oftwo or more nodes to be scheduled. FIG. 7 is a block diagram 700illustrating a process for creating the topology. As shown on FIG. 7, atblock 710, a dictionary may be created to hold a node index and a nodetype. At block 720, a level in a level matrix where an event node occursmay be found. If the event node is found at a decision block 730, aforward topology may be created at block 740. In the forward topology,the scheduler may start at level 0 of the level matrix and add the nodesto the topology in the order the nodes occur. This process continues forlevels 1 through the maximum level of the level matrix.

In an example embodiment, if level3 denotes the level in the levelmatrix being considered, k denotes the number of nodes reached atlevel3, and level3 is set to 0, the following example program code canbe used to create the forward topology:

while (level3 < maxlevels) do Set k = 0 while (k < levelMatrix.length)do Search for next node in level3 If found add it to topology k++ endlevel3++ end.

If the event node is not found at the decision block 730, an eventtopology may be created. The scheduler may start at level at which theevent node is found and add all nodes at that level. Then, for each nodeat that level, the scheduler may find dependent nodes in the previouslevel, and add those dependent nodes to the topology. This process iscontinued backwards through the levels until level 0. Afterwards, thescheduler performs a pass of the forward topology from the first levelafter the event level. As shown on FIG. 7, at block 750, nodes may beordered backward from the event level to level 0. At block 760, thenodes may be ordered forward from the event level to the maximum level.

Resource Independent Scheduling Process.

Referring again to FIG. 4, the method 400 may further include processingthe itinerary network by the scheduler using the topology to create aplurality of tuples at operation 440. In particular, in an exampleembodiment, the resource independent scheduling process, or a resourceindependent schedule algorithm, for each flight node, determinesdeparture and arrival date and time windows, as a function of theitinerary request and the dependencies between two or more nodes in theitinerary network. The departure and arrival date and time windows areused for the content search and ranking of results of the contentsearch. The resource independent scheduling process is also used to alsodetermine check-in and check-out dates for each hotel node in theitinerary network.

The following example program code can be used to determine check-in andcheck-out dates:

ForEach (node n in the topology){ If ( n is a flight node){ SetWideBucket Departure and Arrival Windows Set OptimalBucket Departure andArrival Windows } If ( n is a hotel node){ Set check-in and check-outdates for the hotel } If ( n is a city node) { Do Nothing

The method 400 may further include analyzing the plurality of tuples bythe scheduler based on the itinerary request and dependencies betweentwo or more nodes at operation 450. In particular, the resourceindependent scheduling process may include determining widebucketdeparture windows, widebucket arrival windows, and optimalbucketwindows.

WideBucket Departure Window.

A WideBucket departure window may be used for determining departurewindows for the content search. When the resource independent schedulealgorithm hits a flight node, the resource independent schedulealgorithm may looks for all dependent flight nodes of the flight node inthe itinerary network. The dependent nodes may include previous flightsof the passenger, or flights from other passenger's itineraries whichimpact this passenger, for example if they these passengers flytogether. The resource independent schedule algorithm then sets thedeparture window based on the requested date and time and the dependentflights. The resource independent schedule algorithm for determining thewidebucket departure window is described in detail below.

Let F_(i) be a flight node. The departure window for F_(i) is [x_(st),x_(fi)] and the arrival window is [d_(st), d_(fi)]. r_(i) is a requesteddate and t_(i) is requested time.

In the first step, the start and end of departure window are initializedto the current date and time (D). [x_(st), x_(fi)]=[D,D]. In the secondstep, all dependent flight nodes for this flight node are found in theitinerary network. The example program code for these steps may be asfollows:

foreach (node in nDependencies) do switch (NodeType of node) do caseFlight (find a flight tuple corresponding to the node in a list and addto Deps if not there already) case City (find a flight tuplecorresponding to a previous flight and add to Deps if not there already); case Hotel (find a hotel tuple corresponding to the node in a list andadd to hotel Deps if not there already) ; endsw end

In the third step, if the set of dependent flights is null, then go tostep 4. Else go to step 5. In the fourth step, departure window is setbased on requested date and time. The example program code of the codedalgorithm is given below:

if (Deps = null) then if (requested date (r_(i)) or requested time(t_(i)) ! = null) then if (requested date (r_(i)) > Today ) then[x_(st),x_(fi)] = (12 am r_(i), 11:59 pm r_(i) + Delta) end if(requested date (r_(i)) = Today) then [x_(st),x_(fi)] = (Now + mct,Now + mct + Delta) end end end

In the fifth step, the widebucket departure window may be set based onrequested date and time, if any. The example program code of the codedalgorithm is given below:

if (requested date (r_(i))! = null) then (start, finish) = (r_(i) at 12am, r_(i) + Delta at 11:59 pm) end

Start and finish variables are updated based on arrival windows ofdependent flights. Basically, start is set to be maximum start andfinish is set to be minimum finish of all arrival windows (wherefinish>start). The example program code of the coded algorithm is givenbelow:

foreach (FlightTuple t in Deps) do Let start_(t) and end_(t) denote thestart and end of widebucket arrival window, respectively if (start_(t) >start) then start = start_(t) end if (end_(t) < finish AND end_(t) >start) then finish = end_(t) end end foreach (HotelTuple t in Deps) doif (t.checkout date > start) then start =t.checkout date end if(t.checkout date < finish AND t.checkout date > start) then finish =t.checkout date end end

If the requested date (r_(i)) falls significantly outside the interval(start, finish), the scheduler may build the departure window on r_(i).Otherwise, [x_(st),x_(fi)] is equal to (start+mct, finish+mct+Delta).

WideBucket Arrival Window.

The shortest and longest flying times are determined for the flight$F_{i}$. The shortest and longest flying time may be $fly_{s}$, and thelongest flying time may be $fly_{l}$. Thereafter, the time zonedifference, diff, is determined. The time zone difference is an integernumber (e.g., number of minutes) depending on regions of departure andarrival airports. Based on the combining, the arrival window may be($x_{st}$+$fly_{s}$+diff, $x_{fi}$+$fly_{l}$+diff).

OptimalBucket Window.

The optimal flight departure window or the optimal flight arrival window(or both) is essentially a narrower time window for when the passengerwants to fly, based on dates and times requested in the itineraryrequest. Flights found in larger window may be ranked based on whether aflight fits into this narrower window. This process is similar tocreation of the flight windows created earlier, with the followingdifference: if a flight cannot be found in a preferred window,reasonable flights falling outside the optimal window still can beobtain. In conventional methods, these reasonable flights are missed andan empty solution is provided.

The wide departure window may be determined as [$wd_{st}$, $wd_{fi}$],the wide arrival window may be determined as [$wa_{st}$, $wa_{fi}$], thenarrow departure window may be determined as [$nd_{st}$, $nd_{fi}$], andthe narrow arrival window may be determined as [$na_{st}$, $na_{fi}$].

The algorithm for determining the optimalbucket windows may includeobtaining wider flight windows (departure and arrival):

Set [$nd_{st}$, $nd_{fi}$] $=$ [$wd_{st}$, $wd_{fi}$] initially.

The wider flight windows may be switched based on a type of theitinerary request. Intervals may be handled by going through departurebefore x1 and departure after x2 separately. Similar steps are performedfor arrival intervals:

(a) Depart on x

-   -   check that nd_(st)<x<nd_(fi)    -   (nd_(st), nd_(fi))=[nd_(st), x]

(b) Depart Before x

-   -   check that nd_(st)<x<nd_(fi)    -   (nd_(st), nd_(fi))=[nd_(st), x]

(c) Depart after x

-   -   check that nd_(st)<x<nd_(fi)    -   (nd_(st), nd_(fi))=[nd_(st), x]

(d) Arrive on x

-   -   check that na_(st)<x<na_(fi)    -   (na_(st), na_(fi))=[na_(st), x]

(e) Arrive Before x

-   -   check that na_(st)<x<na_(fi)    -   (na_(st), na_(fi))=[na_(st), x]

(f) Arrive after x

-   -   check that na_(st)<x<na_(fi)    -   (na_(st), na_(fi))=[x, na_(fi)]

Partition Algorithm.

The following program code may be used for initiating the partitionalgorithm, Cartesian product algorithm, and content search:

foreach (Passenger) do Partition Algorithm end Content Search RankingPartition Subset Solutions foreach (Passenger) do Cartesian ProductAlgorithm end

The partition algorithm, Cartesian product algorithm, and ranking aredescribed in more detail below.

The partition refers to groupings of flight tuples. More specifically,the method 400 can include selecting a partition of the flight tuplesfor each passenger. Hotel tuples are not part of the partition. There isa possibility to perform more than one partition. Input data for apartition algorithm may include a level matrix. Output data of thepartition algorithm is a combination of partitions of flight tuplesand/or individual flight tuples. Let Ti is a trip, such as a trip byplane, train, and so forth. Using a depth-first search (DFS) algorithmto find cycles may miss combinations of the form (YYZ-LHR, CDG-YYZ) and(LHR-CDG) corresponding to (T1, T3) and (T2). This may be caused by thefact that DFS follows the path and includes LHR-CDG in the path whencreating the cycle. Therefore, the DFS algorithm may produceYYZ-LHR-CDG-YYZ->(T1, T2, T3).

In example embodiments, other ways of finding potential returncombinations of partitions of flight tuples that are not path dependentmay be used.

Example Partition Algorithm 1.

Two flight nodes Fi and Fj may be related as follows: Fi origin city=Fjdestination city. This relation may be not an equivalence relation sincethe relation is not symmetric. However, the relation can partition themain set into meaningful subsets based on potential cycles. The inputdata for the partition algorithm may include a list of flight nodes. Theoutput data may include a list of subsets of flight nodes. Duringexecution of the partition algorithm, a list of subsets may be definedand called PartitionSubsets. Furthermore, the number of flight nodes maybe counted. In an example embodiments, the following program code may beused for this purpose:

for (int i = 0; i < Count; i++) do for (int j = 0; j < Count; j++) do if(i < j) then if (Fi.origin city − Fj.destination city) then if there isa set in PartitionSubsets containing Fi or Fj (but not both) then add Fior Fj to this set if no such set then create a new set, add Fi and Fj tothe new set. Add set to PartitionSubsets end end end end

For any flight nodes not added to a set, single flight sets may becreated and added to PartitionSubsets.

The partition algorithm may produce the same result as creating a graphwhose nodes are trips Ti and with edges between two trips if origin cityof one trip is equal to destination city of another trip. The new set tobe partitioned may consist of disjoint connected components of thegraph, which are the PartitionSubsets in the partition algorithmdescribed above.

Example Partition Algorithm 2.

Execution of the partition algorithm may include finding all pairs oftrips where origin of the first trip is the same as destination of thesecond trip. Furthermore, all disjoint combinations of pairs of tripsmay be found. The leftover trips not in pairs may be added. Thereby, oneor more modified sets may be obtained, where pairs of trips are treatedas a single element. Furthermore, all partitions for each modified setmay be found. Finally, edge cases may be added.

Cartesian Product Algorithm.

The Cartesian product algorithm, also referred herein to as a Heuristicalgorithm, may combine solutions across the partition subsets and hotelsolutions to form a complete flight (and hotel) solution for thepassenger. The Cartesian product algorithm may include taking a crossproduct of solutions across the partition subset solution buckets forflights (A×B×C). Furthermore, each solution obtained may be checked forcorrectness (e.g., one flight does not depart before a previousdependent flight arrives). These operations are illustrated in FIG. 4,namely the method 400 may include determining feasible itinerarysolutions by the scheduler based on the analysis at operation 460. Thefeasible solutions may be stored in a partition solution bucket. TheCartesian product algorithm may further include taking a cross productof full solutions with a list of hotel solutions to combine flights andhotels correctly.

As shown in FIG. 4, at operation 470, the feasible itinerary solutionsmay be ranked based on passenger preferences. In an example embodiment,the passenger preferences are determined based on the itinerary requestor a preexisting selection. More specifically, upon execution of theCartesian product algorithm, the ranking is applied to feasiblesolutions provided by Cartesian product algorithm. A predeterminednumber of the top itinerary solutions may be selected. If identicaldependencies associated with each of the passengers are identified, suchas the same flight and hotel dependencies among the passengers, anitinerary wide Cartesian product algorithm may be initiated across thepartition solutions and the feasible solutions may be ranked based onthe identical dependencies. In some example embodiments, a conventionalranking procedure may be performed. At operation 480, at least oneitinerary solution selected from the feasible itinerary solutions basedon the ranking may be presented to the one or more passengers.

Change Management Module.

Changes to an existing itinerary network can take almost any direction:from changes to the resultant itinerary network to date and time change,adding companions to the itinerary or removing companions of theitineraries.

Change management of the itinerary network is handled by the changemanagement module using the following steps.

First, a new itinerary network may be generated by the parser. This newitinerary network may be typically created by making changes to anexisting itinerary network.

Second, the scheduler may generate a new Cartesian product solution bygoing through the steps of pre-scheduling, resource independentscheduling, partitioning, content searches and Cartesian product, as maybe suitable for the new itinerary network. The Cartesian product may beperformed on the new itinerary network independently from the existingitinerary network or sets of itinerary solutions associated with theexisting itinerary network.

Third, previously booked flights and hotels, if it is deemed suitable toretain the flights and hotels, may be given additional scores whereflights and hotels form part of the new Cartesian product solution forthe new itinerary network. In this manner, they the flights and hotelsmay naturally be a part of a solution space of the new itinerarynetwork. In an example embodiment, inclusion of previously bookedflights and hotels may be congruent, in other example embodiments,inclusion of previously booked flights and hotels may be not congruent.

As a result of selection of a member of the Cartesian product as theitinerary solution, one or more of the following functions may occur:(a) new partitions may be created; (b) some old partitions may beretained; and (c) old partitions may be deleted (i.e., cancelled).

The overall process performed by the change management module is similarto the process performed by the original module. The operations areperformed by the parser and the scheduler (pre-scheduling, resourceindependent scheduling, and content search). The operation of the changemanagement module is described with reference to one passenger, however,a plurality of passengers also may be analyzed by the change managementmodule.

The parser may receive an itinerary request from a passenger andidentify a preexisting itinerary network associated with the passenger.The preexisting itinerary network may be associated with one or moreprevious itinerary requests associated with the passenger. The inputdata for the change management module may include a previous itinerarythat may include a partition P_(old) associated with the previousitinerary and a booked solution (denoted as bookedSolutions). The inputdata may further include an itinerary object associated with a newitinerary request received by the change management module. The processperformed by the change management module may include running theresource independent scheduling to create time windows for flights andhotels in a new itinerary network (as in the process performed by theoriginal module). The process may further include running a partitionalgorithm to create a partition for the new network P_(new). The processmay continue with running a content search to fill itinerary solutionbuckets for partition subsets of P_(new). The content search may beunrestricted by the booked old itinerary solution at this stage. Theprocess may further include running a Cartesian product algorithm toobtain feasible itinerary solutions for the new itinerary network. Basedon the feasible itinerary solutions, the preexisting itinerary networkmay be updated for further use during processing of further itineraryrequests.

The following code can be used to perform these operations:

foreach (Solution in CartesianProduct) do foreach (Flight insolution.Flights) do If a flight exists in Booked Solution, then add oneto ChangeManagementRank field of the solution Else Do Nothing end end

In example embodiment, the ranking may be combined with conventionalranking operations. Different types of ranking may have an equal weightor a predetermined weight in a combined ranking. Finally, the solutionsmay be scored and ranked based on the score.

FIG. 8 is a block diagram showing various modules of the system 800 fortranslating user requests into itinerary solutions, in accordance withcertain embodiments. The system 800 may include a processor 810, aparser 820, a scheduler 830, and an optional database 840. The processor810 may include a programmable processor, such as a microcontroller,central processing unit (CPU), and so forth. In other embodiments, theprocessor 810 may include an application-specific integrated circuit orprogrammable logic array, such as a field programmable gate arraydesigned to implement the functions performed by the system 800.

The processor 810 may be operable to receive an itinerary requestassociated with one or more passengers. The parser 820, being incommunication with the processor 810, may be operable to parse theitinerary request to create an itinerary network associated with theitinerary request. The itinerary network may include at least two ormore nodes and dependencies between two or more nodes. The two or morenodes may be selected from a group comprising: an origin city, adestination city, a hotel, a date, a time, an airline, a connectionbetween flights, and so forth.

In example embodiments, the scheduler 830, being in communication withthe processor 810 and the parser 820, may be further operable toorganize the two or more nodes into levels based on the dependenciesbetween two or more nodes to create a level matrix of the itinerarynetwork. Therefore, the dependencies between two or more nodes mayinclude at least level dependencies. The scheduler 830 may also create atopology of the itinerary network that may include at least an orderedlist of the two or more nodes. The topology of the itinerary network maybe created based on the level matrix. In further example embodiments,the scheduler 830 may be operable to classify each of the nodes into amain node and a child node based on the dependencies between the nodes.The child node may be dependent on the main node.

Thereafter, the scheduler 830 may be operable to process the itinerarynetwork using the topology to create a plurality of tuple, such asflight tuples and hotel tuples. In an example embodiment, the flighttuples may include at least a departure date, a departure time, anarrival date, and an arrival time. The hotel tuples may include at leasta check-in date, a check-in time, a check-out date, and a check-outtime.

The scheduler 830 may be further operable to analyze the plurality oftuples based on the itinerary request and the dependencies between twoor more nodes. In an example embodiment, the analysis may includeseparation of the plurality of tuples into groups. Each group maycorrespond to one of the passengers. Furthermore, a partition of theflight tuples may be selected for each of the one or more passengers.

Based on the analysis, the scheduler 830 may be operable to determinefeasible itinerary solutions. In particular, based on the hotel tuplesand the partition of the flight tuples, a content search may beperformed to determine the feasible itinerary solutions for each of theone or more passengers. The feasible itinerary solutions may be rankedby the scheduler 830 based on passenger preferences. In an exampleembodiment, the passenger preferences are determined based on theitinerary request or a preexisting selection. The scheduler 830 mayfurther identify identical dependencies associated with each of the oneor more passengers based on the dependencies between two or more nodes.In this embodiment, the ranking may be further based on the identicaldependencies.

The processor 810 may be further operable to present at least oneitinerary solution to the one or more passengers. The at least oneitinerary solution may be selected from the feasible itinerary solutionsbased on the ranking.

In some example embodiments, the parser 820 may be further operable toidentify a preexisting itinerary network associated with the passengers.In particular, the preexisting itinerary network may be associated withprevious itinerary requests associated with the passengers. Uponidentification of the preexisting itinerary network, the parser 820 mayupdate the preexisting itinerary network based on the feasible itinerarysolutions selected in response to the itinerary request of thepassenger.

FIG. 9 shows a diagrammatic representation of a computing device for amachine in the exemplary electronic form of a computer system 900,within which a set of instructions for causing the machine to performany one or more of the methodologies discussed herein can be executed.In various exemplary embodiments, the machine operates as a standalonedevice or can be connected (e.g., networked) to other machines. In anetworked deployment, the machine can operate in the capacity of aserver or a client machine in a server-client network environment, or asa peer machine in a peer-to-peer (or distributed) network environment.The machine can be a PC, a tablet PC, a set-top box, a cellulartelephone, a digital camera, a portable music player (e.g., a portablehard drive audio device, such as an Moving Picture Experts Group AudioLayer 3 player), a web appliance, a network router, a switch, a bridge,or any machine capable of executing a set of instructions (sequential orotherwise) that specify actions to be taken by that machine. Further,while only a single machine is illustrated, the term “machine” shallalso be taken to include any collection of machines that individually orjointly execute a set (or multiple sets) of instructions to perform anyone or more of the methodologies discussed herein.

The computer system 900 includes a processor or multiple processors 902,a hard disk drive 904, a main memory 906, and a static memory 908, whichcommunicate with each other via a bus 910. The computer system 900 mayalso include a network interface device 912. The hard disk drive 904 mayinclude a computer-readable medium 920, which stores one or more sets ofinstructions 922 embodying or utilized by any one or more of themethodologies or functions described herein. The instructions 922 canalso reside, completely or at least partially, within the main memory906 and/or within the processors 902 during execution thereof by thecomputer system 900. The main memory 906 and the processors 902 alsoconstitute machine-readable media.

While the computer-readable medium 920 is shown in an exemplaryembodiment to be a single medium, the term “computer-readable medium”should be taken to include a single medium or multiple media (e.g., acentralized or distributed database, and/or associated caches andservers) that store the one or more sets of instructions. The term“computer-readable medium” shall also be taken to include any mediumthat is capable of storing, encoding, or carrying a set of instructionsfor execution by the machine and that causes the machine to perform anyone or more of the methodologies of the present application, or that iscapable of storing, encoding, or carrying data structures utilized by orassociated with such a set of instructions. The term “computer-readablemedium” shall accordingly be taken to include, but not be limited to,solid-state memories, optical and magnetic media. Such media can alsoinclude, without limitation, hard disks, floppy disks, NAND or NOR flashmemory, digital video disks, Random Access Memory (RAM), Read-OnlyMemory (ROM), and the like.

The exemplary embodiments described herein can be implemented in anoperating environment comprising computer-executable instructions (e.g.,software) installed on a computer, in hardware, or in a combination ofsoftware and hardware. The computer-executable instructions can bewritten in a computer programming language or can be embodied infirmware logic. If written in a programming language conforming to arecognized standard, such instructions can be executed on a variety ofhardware platforms and for interfaces to a variety of operating systems.

In some embodiments, the computer system 900 may be implemented as acloud-based computing environment, such as a virtual machine operatingwithin a computing cloud. In other embodiments, the computer system 900may itself include a cloud-based computing environment, where thefunctionalities of the computer system 900 are executed in a distributedfashion. Thus, the computer system 900, when configured as a computingcloud, may include pluralities of computing devices in various forms, aswill be described in greater detail below.

In general, a cloud-based computing environment is a resource thattypically combines the computational power of a large grouping ofprocessors (such as within web servers) and/or that combines the storagecapacity of a large grouping of computer memories or storage devices.Systems that provide cloud-based resources may be utilized exclusivelyby their owners, or such systems may be accessible to outside users whodeploy applications within the computing infrastructure to obtain thebenefit of large computational or storage resources.

The cloud may be formed, for example, by a network of web servers thatcomprise a plurality of computing devices, such as a client device, witheach server (or at least a plurality thereof) providing processor and/orstorage resources. These servers may manage workloads provided bymultiple users (e.g., cloud resource consumers or other users).Typically, each user places workload demands upon the cloud that vary inreal-time, sometimes dramatically. The nature and extent of thesevariations typically depends on the type of business associated with theuser.

It is noteworthy that any hardware platform suitable for performing theprocessing described herein is suitable for use with the technology. Theterms “computer-readable storage medium” and “computer-readable storagemedia” as used herein refer to any medium or media that participate inproviding instructions to a CPU for execution. Such media can take manyforms, including, but not limited to, non-volatile media, volatile mediaand transmission media. Non-volatile media include, for example, opticalor magnetic disks, such as a fixed disk. Volatile media include dynamicmemory, such as system RAM. Transmission media include coaxial cables,copper wire, and fiber optics, among others, including the wires thatcomprise one embodiment of a bus. Transmission media can also take theform of acoustic or light waves, such as those generated during radiofrequency (RF) and infrared (IR) data communications. Common forms ofcomputer-readable media include, for example, a floppy disk, a flexibledisk, a hard disk, magnetic tape, any other magnetic medium, a CD-ROMdisk, digital video disk, any other optical medium, any other physicalmedium with patterns of marks or holes, a RAM, a Programmable Read-OnlyMemory, an Erasable Programmable Read-Only Memory (EPROM), anElectrically Erasable Programmable Read-Only Memory, a FlashEPROM, anyother memory chip or data exchange adapter, a carrier wave, or any othermedium from which a computer can read.

Various forms of computer-readable media may be involved in carrying oneor more sequences of one or more instructions to a CPU for execution. Abus carries the data to system RAM, from which a CPU retrieves andexecutes the instructions. The instructions received by system RAM canoptionally be stored on a fixed disk either before or after execution bya CPU.

Computer program code for carrying out operations for aspects of thepresent technology may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a LAN or a WAN, or the connectionmay be made to an external computer (for example, through the Internetusing an Internet Service Provider).

The corresponding structures, materials, acts, and equivalents of allmeans or steps plus function elements in the claims below are intendedto include any structure, material, or act for performing the functionin combination with other claimed elements as specifically claimed. Thedescription of the present technology has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the disclosure. Many modifications and variations will beapparent to those of ordinary skill in the art without departing fromthe scope and spirit of the disclosure. Exemplary embodiments werechosen and described in order to best explain the principles of thepresent technology and its practical application, and to enable othersof ordinary skill in the art to understand the disclosure for variousembodiments with various modifications as are suited to the particularuse contemplated.

Aspects of the present technology are described above with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of thedisclosure. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

Thus, computer-implemented methods and systems for translating userrequests into itinerary solutions are described. Although embodimentshave been described with reference to specific exemplary embodiments, itwill be evident that various modifications and changes can be made tothese exemplary embodiments without departing from the broader spiritand scope of the present application. Accordingly, the specification anddrawings are to be regarded in an illustrative rather than a restrictivesense.

What is claimed is:
 1. A system for translating user requests intoitinerary solutions, the system comprising: a processor; and a memorycoupled to the processor, the memory storing instruction executable bythe memory to perform a method comprising: receiving an itineraryrequest associated with one or more passengers; determining at least twonodes associated with the itinerary request and dependencies between theat least two nodes; combining the at least two nodes into an itinerarynetwork; creating a level matrix for the itinerary network by selectingmain nodes from the at least two nodes in the itinerary network andchild nodes that depend on the main nodes; constructing a topology ofthe itinerary network using the level matrix, the topology including anordered list of the at least two nodes; producing a plurality of tuplesusing the topology, the plurality of tuples including at least flighttuples and hotel tuples, each tuple of the plurality of tuples being aset of objects associated with a node of the at least two nodes;ascertaining respective feasible itinerary solutions for the one or morepassengers using the plurality of tuples and the dependencies betweenthe at least two nodes; ranking the respective feasible itinerarysolutions using passenger preferences; and presenting, to at least oneof the one or more passengers, a respective itinerary solution of therespective feasible itinerary solutions using the ranking.
 2. The systemof claim 1, wherein the flight tuples include at least a departure date,a departure time, an arrival date, and an arrival time, and the hoteltuples include at least a check-in date, a check-in time, a check-outdate, and a check-out time.
 3. The system of claim 1, wherein the methodfurther comprises generating an adjacency matrix of the itinerarynetwork using a classification of the main nodes and the child nodesfrom the at least two nodes of the itinerary network.
 4. The system ofclaim 1, wherein the method further comprises: separating the pluralityof tuples into groups, each group corresponding to one of the one ormore passengers; selecting a partition of the flight tuples for each ofthe one or more passengers; and finding the respective feasibleitinerary solutions using a content search of the hotel tuples and thepartition of the flight tuples.
 5. The system of claim 1, wherein themethod further comprises identifying identical dependencies associatedwith each of the one or more passengers using the dependencies betweenat least two nodes, and the ranking further uses the identicaldependencies.
 6. The system of claim 1, wherein the passengerpreferences are determined using at least one of the itinerary requestand a preexisting selection for the one or more passengers from aprevious itinerary request.
 7. The system of claim 1, wherein the methodfurther comprises: identifying a preexisting itinerary networkassociated with the one or more passengers, the preexisting itinerarynetwork being associated with one or more previous itinerary requestsassociated with the one or more passengers; and updating the preexistingitinerary network using the feasible itinerary solutions.
 8. The systemof claim 1, wherein the dependencies between at least two nodes includeat least level dependencies.
 9. The system of claim 1, wherein the atleast two nodes are selected from a group comprising: an origin city, adestination city, a hotel, a date, a time, an airline, and a connectionbetween flights.
 10. The system of claim 1, wherein the method furthercomprises retrieving the passenger preferences from a data store.
 11. Acomputer-implemented method for translating user requests into itinerarysolutions, the method comprising: a processor; and a memory coupled tothe processor, the memory storing instruction executable by the memoryto perform a method comprising: receiving an itinerary requestassociated with one or more passengers; determining at least two nodesassociated with the itinerary request and dependencies between the atleast two nodes; combining the at least two nodes into an itinerarynetwork; creating a level matrix for the itinerary network by selectingmain nodes from the at least two nodes in the itinerary network andchild nodes that depend on the main nodes; constructing a topology ofthe itinerary network using the level matrix, the topology including anordered list of the at least two nodes; producing a plurality of tuplesusing the topology, the plurality of tuples including at least flighttuples and hotel tuples, each tuple of the plurality of tuples being aset of objects associated with a node of the at least two nodes;ascertaining respective feasible itinerary solutions for the one or morepassengers using the plurality of tuples and the dependencies betweenthe at least two nodes; ranking the respective feasible itinerarysolutions using passenger preferences; and presenting, to at least oneof the one or more passengers, a respective itinerary solution of therespective feasible itinerary solutions using the ranking.
 12. Thecomputer-implemented method of claim 11, wherein the flight tuplesinclude at least a departure date, a departure time, an arrival date,and an arrival time, and the hotel tuples include at least a check-indate, a check-in time, a check-out date, and a check-out time.
 13. Thecomputer-implemented method of claim 11 further comprising generating anadjacency matrix of the itinerary network using a classification of themain nodes and the child nodes from the at least two nodes of theitinerary network.
 14. The computer-implemented method of claim 11further comprising: separating the plurality of tuples into groups, eachgroup corresponding to one of the one or more passengers; selecting apartition of the flight tuples for each of the one or more passengers;and finding the respective feasible itinerary solutions using a contentsearch of the hotel tuples and the partition of the flight tuples. 15.The computer-implemented method of claim 11 further comprisingidentifying identical dependencies associated with each of the one ormore passengers using the dependencies between at least two nodes, andthe ranking further uses the identical dependencies.
 16. Thecomputer-implemented method of claim 11, wherein the passengerpreferences are determined using at least one of the itinerary requestand a preexisting selection for the one or more passengers from aprevious itinerary request.
 17. The computer-implemented method of claim11 further comprising: identifying a preexisting itinerary networkassociated with the one or more passengers, the preexisting itinerarynetwork being associated with one or more previous itinerary requestsassociated with the one or more passengers; and updating the preexistingitinerary network using the feasible itinerary solutions.
 18. Thecomputer-implemented method of claim 11, wherein the dependenciesbetween at least two nodes include at least level dependencies.
 19. Thecomputer-implemented method of claim 11, wherein the at least two nodesare selected from a group comprising: an origin city, a destinationcity, a hotel, a date, a time, an airline, and a connection betweenflights.